const gulp = require('gulp');

const del = require('del');

const cssmin = require('gulp-cssmin');

const autoprefixer = require('gulp-autoprefixer');

const uglify = require('gulp-uglify'); //压缩Js

const babel = require('gulp-babel');

const htmlmin = require('gulp-htmlmin');

const cssHandler = function () {
  return gulp
    .src('./src/style/*.css')
    .pipe(autoprefixer({
      overrideBrowserslist: ['> 0.15% in CN'],      // 定义浏览器参数
      cascade: true,                                    // 是否添加浏览器前缀，默认：true
    }))
    .pipe(cssmin())
    .pipe(gulp.dest('./dist/style/'))
};

const jsHandler = function () {
  return gulp
    .src('./src/js/*.js')    // 1. 找到 js 文件
    .pipe(babel({
      // babel@7, presets: ['es2015']
      presets: ['@babel/env']
    }))
    .pipe(uglify())
    .pipe(gulp.dest('./dist/js/'))
};

const htmlHandler = function () {
  return gulp
    .src('./src/*.html')
    .pipe(htmlmin({ // 通过你配置的参数来进行压缩
      collapseWhitespace: true, // 表示移出空格
      removeEmptyAttributes: true, // 表示移出空的属性(仅限于原生属性)
      //collapseBooleanAttributes: true, // 移出 checked 类似的布尔值属性
      //removeAttributeQuotes: true, // 移出属性上的双引号
      //minifyCSS: true, // 压缩内嵌式 css 代码(只能基本压缩, 不能自动添加前缀)
      //minifyJS: true, // 压缩内嵌式 JS 代码(只能基本压缩, 不能进行转码)
      //removeStyleLinkTypeAttributes: true, // 移出 style 和 link 标签上的 type 属性
      removeScriptTypeAttributes: true, // 移出 script 标签上默认的 type 属性
    }))
    .pipe(gulp.dest('./dist/'))
};

const imgHandler = function () {
 return gulp
   .src('./src/img/**')
   .pipe(gulp.dest('./dist/img/'))
};

const fontHander = function () {
  return gulp
    .src('./src/font/**')
    .pipe(gulp.dest('./dist/font/'))
};

const libHander = function () {
  return gulp
    .src('./src/js/lib/**')
    .pipe(gulp.dest('./dist/js/lib/'))
};

const mediaHander = function () {
  return gulp
    .src('./src/media/**')
    .pipe(gulp.dest('./dist/media/'))
};

const delHandler = function () {
  return del(['./dist/'])
};


module.exports.default = gulp.series(
  delHandler,
  gulp.parallel(cssHandler,jsHandler,imgHandler,libHander,fontHander,imgHandler,mediaHander,htmlHandler)
);






